import { useDictStore } from '@/stores'
import type {  DICT } from '@/types/login'
 export type DictItem = {
  label: string
  value: string
}

 export type SelectItem = {
  text: string
  value: string
}

// 完善的根据key获取字典数组的方法
export const getDictByKey = (key: string): DictItem[] => {
  const dictStore = useDictStore()
  const allDicts = dictStore.getDict() // 假设getDict()返回所有字典数组
  
  // 验证输入和数据源
  if (!key || !Array.isArray(allDicts) || allDicts.length === 0) {
    return []
  }
  
  // 查找匹配的字典项并转换格式
  const matchedDicts = allDicts.filter(item => item.dictType === key)
  
  // 转换为只包含label和value的数组
  return matchedDicts.map(dict => ({
    label: dict.label,
    value: dict.value
  }))
}

export const getLabel = (key: string, value: string | number): string | null => {
  const dictStore = useDictStore();
  const allDicts = dictStore.getDict(); // 假设 getDict() 返回所有字典数组

  // 验证输入和数据源
  if (!key || typeof key !== 'string') {
    console.warn('Invalid key provided. Must be a non-empty string.');
    return null;
  }

  if (value === undefined || value === null) {
    console.warn('Invalid value provided. Must be a non-empty string or number.');
    return null;
  }

  if (!Array.isArray(allDicts) || allDicts.length === 0) {
    console.warn('No dictionaries available in the store.');
    return null;
  }

  // 将value统一转为字符串进行比较，避免类型不匹配问题
  const valueStr = String(value);
  
  // 查找匹配的字典项
  const matchedDict = allDicts.find(
    item => item.dictType === key && String(item.value) === valueStr
  );

  // 如果找到匹配项，返回 label，否则返回 null
  return matchedDict ? matchedDict.label : null;
};

/**
 * 根据dictType获取对应的下拉选项列表
 * @param dictType 字典类型（如'mqtt_device_type'）
 * @returns 包含text和value的下拉选项数组
 */
export const getSelectList = (dictType: string): SelectItem[] => {
  if (!dictType) {
    console.warn('getSelectList: dictType不能为空')
    return []
  }

  const dictStore = useDictStore()
  const allDicts: DICT[] = dictStore.getDict() // 获取所有字典项
  // 验证数据源格式
  if (!Array.isArray(allDicts)) {
    console.error('getSelectList: 字典数据不是数组')
    return []
  }

  // 根据dictType筛选，并转换格式
  const matchedDicts = allDicts
    .filter(item => item.dictType === dictType) // 匹配dictType
    .map(dict => ({
      text: dict.label || '', // 确保text有默认值
      value: dict.value || ''  // 确保value有默认值
    }))

  return matchedDicts
}


